My invention relates to data processing generally, and in particular, to data buffers.
In systems such as computer-driven data acquisition systems, data from a data source, or channel, being scanned is often generated at a much slower rate than the computer is capable of processing it. To make efficient use of the computer, therefore, it is necessary to scan a plurality of data sources and temporarily store the data therefrom in a memory until enough data has been collected from a given source to justify processing it. Such data processing arrangements are generally known as data buffers.
In a typical N-source data buffer arrangement, the data from a single source is unloaded from the buffer memory and processed after each scan cycle, i.e., after each source has been scanned once and a data word from each source has been stored in the buffer memory. Since each source is thus scanned N times between successive processings of the data therefrom, N buffer memory cells for each source, or a total of N.sup.2 cells, are typically provided. However, no more than (N.sup.2 +N)/2 of the N.sup.2 cells contain data words at any given time because at any point in the buffering process, the buffer memory will have stored therein only one data word from the most recently "unloaded" source, two from the second most recently "unloaded" source, and so forth. This would seem to indicate that, at most, a data buffer would require (N.sup.2 +N)/2 memory cells to buffer data from N sources. However, in known data buffer arrangements it will be appreciated that a different (N.sup.2 +N)/2 cells contain data at different times.
Although in typical data buffer arrangements the data from a given source is processed after each scan cycle, other arrangements are known for processing such data after a plurality, J, of scan cycles has occurred. Thus J.times.N.sup.2 buffer memory cells are required in these arrangements even though only J.times.(N.sup.2 +N)/2 cells thereof contain data at any given time.